SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE Procedure [dbo].[SP_TCCANJ_PROV_D01]  
/*-------------------------------------------------------*/  
/*---Empresa              : OFISIS S.A.                --*/  
/*---Cliente              : OFISIS S.A.                --*/  
/*---Sistema              : Tesoreria                  --*/  
/*---Mödulo               : Empresa                    --*/  
/*---Programa             : Eliminacion de Documentos  --*/  
/*                          Generados x Letras         --*/  
/*                          por Canje                  --*/   
/*---Script               : TCCANJ_PROV_D01.sql        --*/  
/*---Nombre SP            : SP_TCCANJ_PROV_D01         --*/  
/*---Desarrollado por     : Denis Villacr's            --*/  
/*---Fecha Creaciön       : 04/07/2000                 --*/  
/*---Base Datos           : Microsoft Sql Server       --*/  
/*---Versiön              : 7.0                        --*/  
/*---Invoca a SP          :                            --*/  
/*-------------------------------------------------------*/  
/*-------------------------------------------------------*/  
/*---Modificado 1 por     :DCH                            --*/  
/*---Fecha Modificaciön   :14/03/2002                 --*/   
/*---Detalle Modificaciön :Se modific© la eliminac para que         --*/  
/*---      jale el estado original y no el "ACE"--*/  
/*-------------------------------------------------------*/  
/*-------------------------------------------------------*/  
/*---Modificado 2 por     : Maribel Julca Rodriguez    --*/  
/*---Fecha Modificaci©n   : 21/04/2005                 --*/   
/*---Detalle Modificaci©n : ingreso de los campos CO_USUA_CREA, CO_USUA_MODI  --*/  
/*-------------------------------------------------------*/  
/*-------------------------------------------------------*/  
/*---Modificado 3 por     : Carlos Marquez Escobar    --*/  
/*---Fecha Modificaci©n   : 27/02/2006                --*/   
/*---Detalle Modificaci©n : Considerar Detraccion	  --*/  
/*-------------------------------------------------------*/  
/*-------------------------------------------------------*/  
/*---Modificado 4 por     : Javier Flores    --*/  
/*---Fecha Modificaci©n   : 17/07/2007                --*/   
/*---Detalle Modificaci©n : Se puso el campo FE_CANJ en el DELETE TMLETR_PROV	  --*/  
/*-------------------------------------------------------*/  
/*---Comentarios                                       --*/  
/*---                                                  --*/  
/*---                                                  --*/  
/*-------------------------------------------------------*/  
/*-------------------------------------------------------*/  
/*---Drop Proc SP_TCCANJ_PROV_D01                      --*/  
/*---Grant Execute on SP_TCCANJ_PROV_D01 to public         --*/   
/*---SP_TCCANJ_PROV_D01                              --*/  
/*-------------------------------------------------------*/  
 @ISCO_EMPR         TD_VC_002,   
 @ISCO_USUA_MODI    TD_VC_008_USUA,  
 @ISCO_UNID_CONC    TD_VC_003,  
 @ISCO_PROV         TD_VC_020,  
 @ISNU_CANJ         TD_VC_008,  
 @IDFE_CANJ     TD_DT_001
	As
Declare  
 @VSCO_ESTA_DOCU    TD_VC_003,  
 @VSCO_ESDO_TMLE    TD_VC_003,  
 @VSCO_DOCU_LETR    TD_VC_003,  
 @VSCO_DOCU_CRET    TD_VC_003,  
 @VSCO_DOCU_CDET    TD_VC_003  
  
  Begin Tran SP_TCCANJ_PROV_D01
  
  
	Select @VSCO_ESTA_DOCU = Null, @VSCO_ESDO_TMLE =  Null, @VSCO_DOCU_LETR = Null  
	
	Exec SP_TTTIES_DOCU_Q01 1, @VSCO_ESTA_DOCU OUTPUT  
	
	
	--R E T E N C I O N E S
	Exec SP_TTDOCU_CNTB_Q01 22, @VSCO_DOCU_CRET OUTPUT  
	
	Delete TDPROG_PAGO  
	From TDPROG_PAGO T1, TDCANJ_PROV T2  
	Where T1.CO_EMPR = @ISCO_EMPR  
	And T1.CO_PROV = @ISCO_PROV  
	And T1.CO_TIPO_DOCU = @VSCO_DOCU_CRET  
	And T1.CO_EMPR = T2.CO_EMPR   
	And T1.CO_PROV = T2.CO_PROV  
	And T2.CO_UNID_CONC = @ISCO_UNID_CONC  
	And T2.NU_CANJ = @ISNU_CANJ  
	And T2.FE_CANJ = @IDFE_CANJ  
	And T1.CO_TIPO_DOCU = T2.CO_TIPO_DOCU  
	And T1.NU_DOCU_PROV = T2.NU_DOCU_PROV  

	Delete TMDOCU_PROV  
	From TMDOCU_PROV T1, TDCANJ_PROV T2  
	Where T1.CO_EMPR = @ISCO_EMPR  
	And T1.CO_PROV = @ISCO_PROV  
	And T1.CO_TIPO_DOCU = @VSCO_DOCU_CRET  
	And T1.CO_EMPR = T2.CO_EMPR   
	And T1.CO_PROV = T2.CO_PROV  
	And T2.CO_UNID_CONC = @ISCO_UNID_CONC  
	And T2.NU_CANJ = @ISNU_CANJ  
	And T2.FE_CANJ = @IDFE_CANJ  
	And T1.CO_TIPO_DOCU = T2.CO_TIPO_DOCU  
	And T1.NU_DOCU_PROV = T2.NU_DOCU_PROV  
	
	If @@error <> 0  
	Begin  
		Rollback tran SP_TCCANJ_PROV_D01 
		Return  
	End  
	
	--D E T R A C C I O N E S 
	Exec SP_TTDOCU_CNTB_Q01 23, @VSCO_DOCU_CDET OUTPUT    

	Delete TDPROG_PAGO  
	From TDPROG_PAGO T1, TDCANJ_PROV T2  
	Where T1.CO_EMPR = @ISCO_EMPR  
	And T1.CO_PROV = @ISCO_PROV  
	And T1.CO_TIPO_DOCU = @VSCO_DOCU_CDET  
	And T1.CO_EMPR = T2.CO_EMPR   
	And T1.CO_PROV = T2.CO_PROV  
	And T2.CO_UNID_CONC = @ISCO_UNID_CONC  
	And T2.NU_CANJ = @ISNU_CANJ  
	And T2.FE_CANJ = @IDFE_CANJ  
	And T1.CO_TIPO_DOCU = T2.CO_TIPO_DOCU  
	And T1.NU_DOCU_PROV = T2.NU_DOCU_PROV 
	
	Delete TMDOCU_PROV  
	From TMDOCU_PROV T1, TDCANJ_PROV T2  
	Where T1.CO_EMPR = @ISCO_EMPR  
	And T1.CO_PROV = @ISCO_PROV  
	And T1.CO_TIPO_DOCU = @VSCO_DOCU_CDET  
	And T1.CO_EMPR = T2.CO_EMPR   
	And T1.CO_PROV = T2.CO_PROV  
	And T2.CO_UNID_CONC = @ISCO_UNID_CONC  
	And T2.NU_CANJ = @ISNU_CANJ  
	And T2.FE_CANJ = @IDFE_CANJ  
	And T1.CO_TIPO_DOCU = T2.CO_TIPO_DOCU  
	And T1.NU_DOCU_PROV = T2.NU_DOCU_PROV  
	
	If @@error <> 0  
	Begin  
		Rollback tran SP_TCCANJ_PROV_D01 
		Return  
	End  
	
	
	Update  TMDOCU_PROV   
	Set  TMDOCU_PROV.CO_ESTA_DOCU = IsNull(TDCANJ_PROV.CO_ESTA_ORIG, @VSCO_ESTA_DOCU),  
	TMDOCU_PROV.NU_CANJ = NULL,  
	TMDOCU_PROV.IM_PAGA = TMDOCU_PROV.IM_PAGA - TDCANJ_PROV.IM_CANJ_MDOC,   
	TMDOCU_PROV.FE_USUA_MODI = Getdate(),   
	TMDOCU_PROV.CO_USUA_MODI = @ISCO_USUA_MODI  
	FROM  TDCANJ_PROV  
	Where  TMDOCU_PROV.CO_EMPR = @ISCO_EMPR  
	And TMDOCU_PROV.CO_PROV = @ISCO_PROV  
	And TMDOCU_PROV.NU_CANJ = @ISNU_CANJ  
	And TDCANJ_PROV.CO_EMPR = TMDOCU_PROV.CO_EMPR  
	And TDCANJ_PROV.CO_UNID_CONC =  @ISCO_UNID_CONC  
	And TDCANJ_PROV.CO_PROV =  TMDOCU_PROV.CO_PROV  
	And TDCANJ_PROV.NU_CANJ = TMDOCU_PROV.NU_CANJ  
	And TDCANJ_PROV.FE_CANJ = @IDFE_CANJ  
	And TDCANJ_PROV.CO_TIPO_DOCU = TMDOCU_PROV.CO_TIPO_DOCU  
	And TDCANJ_PROV.NU_DOCU_PROV = TMDOCU_PROV.NU_DOCU_PROV  
	
	If @@error <> 0  
	Begin  
		Rollback tran SP_TCCANJ_PROV_D01 
		Return  
	End  
	
	Exec SP_TTTIES_DOCU_Q01  7, @VSCO_ESDO_TMLE OUTPUT  
	
	Exec SP_TTDOCU_CNTB_Q01 6, @VSCO_DOCU_LETR OUTPUT  
	
	
	Update  TMLETR_PROV  
	Set  TMLETR_PROV.CO_ESTA_DOCU = IsNull(TDCANJ_PROV.CO_ESTA_ORIG, @VSCO_ESDO_TMLE),  
	TMLETR_PROV.NU_CANJ = NULL,  
	TMLETR_PROV.IM_PAGA = TMLETR_PROV.IM_PAGA - TDCANJ_PROV.IM_CANJ_MDOC,  
	TMLETR_PROV.FE_USUA_MODI = Getdate(),   
	TMLETR_PROV.CO_USUA_MODI = @ISCO_USUA_MODI  
	FROM  TDCANJ_PROV  
	Where  TMLETR_PROV.CO_EMPR = @ISCO_EMPR  
	And TMLETR_PROV.CO_PROV = @ISCO_PROV  
	And TMLETR_PROV.NU_CANJ Is Not Null   
	And TDCANJ_PROV.CO_EMPR = TMLETR_PROV.CO_EMPR  
	And TDCANJ_PROV.CO_UNID_CONC =  @ISCO_UNID_CONC  
	And TDCANJ_PROV.CO_PROV = TMLETR_PROV.CO_PROV  
	And TDCANJ_PROV.NU_CANJ = TMLETR_PROV.NU_CANJ  
	And TDCANJ_PROV.FE_CANJ = @IDFE_CANJ  
	And TDCANJ_PROV.CO_TIPO_DOCU = @VSCO_DOCU_LETR   
	And TDCANJ_PROV.NU_DOCU_PROV = TMLETR_PROV.NU_LETR_PROV  
	
	If @@error <> 0  
	Begin  
		Rollback tran SP_TCCANJ_PROV_D01 
		Return  
	End  
	
	
	Insert Into  TMREGI_ELIM (CO_EMPR, CO_TABL_ORIG, DE_TABL_ORIG,  
	CO_CLAV_TAOR, CO_USUA_CREA,FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)   
	select  @ISCO_EMPR, 81, 'MAESTRO LETRAS PROVEEDOR',  
	RTRIM( @ISCO_EMPR )+ REPLICATE('#', 2-LEN(RTRIM(@ISCO_EMPR))) +   
	RTRIM( @ISCO_PROV )+ REPLICATE('#', 20-LEN(RTRIM(@ISCO_PROV))) +  
	RTRIM( NU_LETR_PROV )+ REPLICATE('#', 15-LEN(RTRIM(NU_LETR_PROV))), @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, 
GETDATE()   
	From   TMLETR_PROV  
	Where  CO_EMPR = @ISCO_EMPR  
	And CO_PROV = @ISCO_PROV  
	And NU_CANJ = @ISNU_CANJ  
	
	If @@error <> 0  
	Begin  
		Rollback tran SP_TCCANJ_PROV_D01 
		Return  
	End      
	
	Delete  TMLETR_PROV  
	Where  TMLETR_PROV.CO_EMPR = @ISCO_EMPR  
	And TMLETR_PROV.CO_PROV = @ISCO_PROV  
	And TMLETR_PROV.NU_CANJ = @ISNU_CANJ  
	And Exists (Select  T1.CO_PROV  
	From    TDCANJ_PROV T1  
	Where   T1.CO_EMPR = @ISCO_EMPR  
	And T1.CO_UNID_CONC = @ISCO_UNID_CONC  
	And TMLETR_PROV.CO_EMPR = T1.CO_EMPR  
	And TMLETR_PROV.CO_PROV = T1.CO_PROV  
	And TMLETR_PROV.NU_CANJ = T1.NU_CANJ  
        And T1.FE_CANJ = @IDFE_CANJ
	And TMLETR_PROV.NU_LETR_PROV = T1.NU_LETR_PROV)  
	
	If @@error <> 0  
	Begin  
		Rollback tran SP_TCCANJ_PROV_D01 
		Return  
	End      
	
	Insert Into  TMREGI_ELIM (CO_EMPR, CO_TABL_ORIG, DE_TABL_ORIG,  
	CO_CLAV_TAOR, CO_USUA_CREA,FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI )  
	select  @ISCO_EMPR, 80, 'DETALLE CANJE PROVEEDOR',  
	RTRIM( @ISCO_EMPR )+ REPLICATE('#', 2-LEN(RTRIM(@ISCO_EMPR)))+   
	RTRIM( @ISCO_PROV )+ REPLICATE('#', 20-LEN(RTRIM(@ISCO_PROV)))+  
	RTRIM( @ISNU_CANJ )+ REPLICATE('#', 8-LEN(RTRIM(@ISNU_CANJ)))+  
	RTRIM( NU_SECU_CANJ )+ REPLICATE('#', 1-LEN(RTRIM(NU_SECU_CANJ))), @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, 
GETDATE()  
	From   TDCANJ_PROV  
	Where  CO_EMPR = @ISCO_EMPR  
	
	And CO_UNID_CONC = @ISCO_UNID_CONC  
	And CO_PROV = @ISCO_PROV  
	And NU_CANJ = @ISNU_CANJ  
	And FE_CANJ = @IDFE_CANJ  
	
	If @@error <> 0  
	Begin  
		Rollback tran SP_TCCANJ_PROV_D01 
		Return  
	End        
	
	Delete  TDCANJ_PROV  
	Where  CO_EMPR = @ISCO_EMPR  
	And CO_UNID_CONC = @ISCO_UNID_CONC  
	And CO_PROV = @ISCO_PROV  
	And NU_CANJ = @ISNU_CANJ  
	And FE_CANJ = @IDFE_CANJ  
	
	If @@error <> 0  
	Begin  
		Rollback tran SP_TCCANJ_PROV_D01 
		Return  
	End          
	
	Insert Into  TMREGI_ELIM (CO_EMPR, CO_TABL_ORIG, DE_TABL_ORIG,  
	CO_CLAV_TAOR, CO_USUA_CREA,FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)   
	select  @ISCO_EMPR, 15, 'CABECERA CANJE PROVEEDOR',  
	RTRIM( @ISCO_EMPR )+ REPLICATE('#', 2-LEN(RTRIM(@ISCO_EMPR)))+   
	RTRIM( @ISCO_PROV )+ REPLICATE('#', 20-LEN(RTRIM(@ISCO_PROV)))+  
	RTRIM( @ISNU_CANJ )+ REPLICATE('#', 8-LEN(RTRIM(@ISNU_CANJ))), @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, 
GETDATE()  
	From   TCCANJ_PROV  
	Where  CO_EMPR = @ISCO_EMPR  
	And CO_UNID_CONC = @ISCO_UNID_CONC  
	And CO_PROV = @ISCO_PROV  
	And NU_CANJ = @ISNU_CANJ  
	And FE_CANJ = @IDFE_CANJ  
	If @@error <> 0  
	Begin  
		Rollback tran SP_TCCANJ_PROV_D01 
		Return  
	End      
	
	Delete  TCCANJ_PROV  
	Where  CO_EMPR = @ISCO_EMPR  
	And CO_UNID_CONC = @ISCO_UNID_CONC  
	And CO_PROV = @ISCO_PROV  
	And NU_CANJ = @ISNU_CANJ  
	And FE_CANJ = @IDFE_CANJ  
	
	If @@error <> 0  
	Begin  
		Rollback tran SP_TCCANJ_PROV_D01 
		Return  
	End      
  
Commit Tran  
/*------------------------- Fin ------------------------------*/


GO
